home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
rbbs_pc
/
rm881217.zip
/
WDATIME.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-05-22
|
5KB
|
116 lines
;------------------------------------------------------------------------------
; EQUATES
;------------------------------------------------------------------------------
beep equ 07h ; console BEEP
lf equ 0Ah ; linefeed
cr equ 0Dh ; carriage return
eof equ 1Ah ; End Of File marker
;------------------------------------------------------------------------------
; START OF CODE
;------------------------------------------------------------------------------
code segment
assume cs:code, ds:code, es:code
org 100h
start:
jmp getparms
banner db 'WhatDateTIME v1.0 of 05/22/88. By Jan R. Terpstra ->Militantly Public Domain!<-',cr,lf,'$',eof
help db 'Helpfile WDATIME.HLP not found - Usage: WDATIME c',cr,lf,beep,'$'
file db 'WDATIME.HLP',00h
buffer db 64 dup(?)
getparms:
lea dx,banner ; point to string
mov ah,09h ; print it
int 21h ; via DOS
mov si,80H ; Address of PSP commandline
mov ah,[si] ; Get input length
cmp ah,0 ; Any parms?
je no_parms ; No - show help
add si,2 ; Point to first parm
cmp byte ptr [si],'t' ; Check time?
je get_time ; yup
mov ah,2Ah ; get the current time
int 21h ; via DOS
cmp byte ptr [si],'d' ; Check date?
jne weekday ; yup
mov al,dl ; day in AL
jmp exit
weekday:
cmp byte ptr [si],'w' ; Check weekday?
jne get_month ; yup
inc al ; weekday (1 = sun, 7 = sat) in AL
jmp exit
get_month:
cmp byte ptr [si],'m' ; Check month?
jne no_parms ; something wrong here....
mov al,dh ; month in AL
jmp exit
get_time:
mov ah,2ch ; get the current time
int 21h ; via int21
mov al,ch ; move hours in AL
cbw ; convert to word
mov bl,10 ; setup for multiply
mul bl ; multiply by 10
mov dl,al ; store in DL
mov al,cl ; minutes in AL
mov bl,06h ; setup for divide
cbw ; convert to word
div bl ; divide by 10
add al,dl ; set errorlevel
jmp exit ; and ready
no_parms:
lea dx,file ; point to filename
mov ax,3D00h ; open file, compatability mode
int 21h ; via DOS
jc no_help ; if not here, complain
mov bx,ax ; filehandle in BX
read_file:
lea dx,buffer ; point to buffer
mov ah,3Fh
mov cx,64 ; read 64 bytes
int 21h ; via DOS
push ax ; save count
lea si,buffer ; point to buffer
mov cx,ax ; # of chars to print
prt_loop:
mov dl,[si] ; get a char
cmp dl,eof ; end of file?
je looper ; don't print
mov ah,02h ; print it
int 21h ; via DOS
looper:
inc si ; point to next char
loop prt_loop ; more?
pop cx ; get count back
cmp cx,64 ; 64 chars read?
je read_file ; yup, possibly more
mov ah,3Eh ; close file
int 21h ; via DOS
jmp done
no_help:
lea dx,help ; point to string
mov ah,09h ; print it
int 21h ; via DOS
done:
mov al,0FFh ; errorlevel = 255
exit:
mov ah,4Ch ; exit with errorlevel set
int 21h ; end
code ends
end start